import { getToken } from '@/utils/LocalDataUtil'
import config from '@/config/index'
import { getDictDataOption } from '@/utils/getDictDataOption'

export default {
  getGender () {
    return getDictValue('性别', 'dict_gender')
  },
  getReligion () {
    return getDictValue('宗教信仰', 'dict_religion')
  },
  getCredentialsCode () {
    return getDictValue('办证类型', 'dict_credentials_code')
  },
  getPurposeToChina () {
    return getDictValue('来华目的', 'dict_purpose_to_china')
  },
  getCareerCategory () {
    return getDictValue('职业类别', 'dict_career_category')
  },
  getCareer () {
    return getDictValue('职业', 'dict_career')
  },
  getBuildingType () {
    return getDictValue('建筑用途', 'dict_building_type')
  },
  getDangerType () {
    return getDictValue('隐患类型', 'dict_danger_type')
  },
  getRentalUseType () {
    return getDictValue('出租用途', 'dict_rental_use_type')
  },
  getEducation () {
    return getDictValue('学历', 'dict_education')
  },
  getTitle () {
    return getDictValue('人员职务', 'dict_title')
  },
  getEducationByCache () {
    return getDictValue('学历')
  },
  getTitleByCache () {
    return getDictDataOption('人员职务')
  },
  getPoliticsStatusByCache () {
    return getDictDataOption('政治面貌')
  },
  getGenderByCache () {
    return getDictDataOption('性别')
  }
}

function getDictValue (name, key) {
  let arr = window.localStorage.getItem(key)
  if (arr && arr instanceof Array && arr.length > 0) {
    return JSON.parse(arr)
  } else {
    let options = {}
    options.token = getToken()
    options.url = config.serverUrl() + '/gbDictionary/value/list'
    options.data = { keyName: name }
    let result = ajax(options)
    if (result.code && result.code === '200') {
      let data = result.data
      window.localStorage.setItem(key, JSON.stringify(data))
      return data
    } else {
      return []
    }
  }
}

function ajax (options) {
  options = options || {}
  options.type = (options.type || 'GET').toUpperCase()
  options.dataType = options.dataType || 'json'
  let params = formatParams(options.data)
  let xhr = new XMLHttpRequest()
  // 接收 - 第三步
  // xhr.onreadystatechange = function () {
  //   if (xhr.readyState === 4) {
  //     let status = xhr.status
  //     if (status >= 200 && status < 300) {
  //       options.success && options.success(xhr.responseText, xhr.responseXML)
  //     } else {
  //       options.fail && options.fail(status)
  //     }
  //   }
  // }
  if (options.type === 'GET') {
    xhr.open('GET', options.url + '?' + params, false)
    xhr.setRequestHeader('token', options.token)
    xhr.send()
  } else if (options.type === 'POST') {
    xhr.open('POST', options.url, false)
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    xhr.send(params)
  }
  return JSON.parse(xhr.responseText)
}

// 格式化参数
function formatParams (data) {
  var arr = []
  for (var name in data) {
    arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]))
  }
  arr.push(('v=' + Math.random()).replace('.', ''))
  return arr.join('&')
}
